package com.itheima.thread.atomic.demo04;

import java.util.concurrent.atomic.AtomicInteger;

/**
 * 使用jdk1.5以后给我们提供的原子操作的Integer类
 */
public class AtomicIntegerDemo01 {

    public static void main(String[] args) {

        // 创建对象
        /**
         * public AtomicInteger()：	   				初始化一个默认值为0的原子型Integer
         * public AtomicInteger(int initialValue)： 初始化一个指定值的原子型Integer
         */
        // AtomicInteger atomicInteger = new AtomicInteger() ;
        // System.out.println(atomicInteger);

        // public AtomicInteger(int initialValue)： 初始化一个指定值的原子型Integer
         AtomicInteger atomicInteger = new AtomicInteger(5) ;
        // System.out.println(atomicInteger);

        System.out.println("----------------------------------------------");

        /**
         * int get():   			 			 获取值
         * int getAndIncrement():      			 以原子方式将当前值加1，注意，这里返回的是自增前的值。
         * int incrementAndGet():     		     以原子方式将当前值加1，注意，这里返回的是自增后的值。
         * int addAndGet(int data):				 以原子方式将输入的数值与实例中的值（AtomicInteger里的value）相加，并返回结果。
         * int getAndSet(int value):   			 以原子方式设置为newValue的值，并返回旧值。
         */

        // int get():   			 			 获取值
        System.out.println(atomicInteger.get());

        // int getAndIncrement():      			 以原子方式将当前值加1，注意，这里返回的是自增前的值。
        // System.out.println(atomicInteger.getAndIncrement());
        // System.out.println(atomicInteger.get());

        // int incrementAndGet():     		     以原子方式将当前值加1，注意，这里返回的是自增后的值。
        // System.out.println(atomicInteger.incrementAndGet());

        // int addAndGet(int data):				 以原子方式将输入的数值与实例中的值（AtomicInteger里的value）相加，并返回结果。
        // System.out.println(atomicInteger.addAndGet(5));

        // int getAndSet(int value):   			 以原子方式设置为newValue的值，并返回旧值。
        System.out.println(atomicInteger.getAndSet(11));
        System.out.println(atomicInteger.get());


    }

}
